/**
 * @file
 * @author dousha
 * @date 2020
 */

#include "kernel/kernel.h"

/**
 * @mainpage
 *
 * @section 序言
 *
 * SkyLab 是一个用于四轴无人机和固定翼无人机的飞控程序。
 *
 * 要了解系统内部的工作原理，可以从 kernel_init() 开始。
 * 
 * 要在这套系统上进行移植和开发，可以从 config.h 开始。
 * 
 * 注意到：一些函数是使用汇编写成的，这些文件不会被 Doxygen 收录，
 * 所以有时你会看到对缺失函数的调用。以及 Doxygen 不会收录来自 ST 的
 * 标准外设库的文档。要分辨哪些函数来自 SkyLab, 哪些函数来自 ST, 只需要
 * 观察函数的命名方式：小写加下划线的函数来自 SkyLab, 其他则来自 ST.
 *
 * @section 配置硬件
 *
 * @section 配置内核
 *
 * @section 添加、删除和修改驱动
 *
 * @section 添加、删除和修改用户程序
 *
 * @section 贡献代码
 *
 * @section 合规性说明
 * 
 * SkyLab 的源码及其二进制均以 Mozilla 开源许可证授权，具体授权内容
 * 见 LICENSE 文件。SkyLab 的源码为 src/ 目录下的所有文件。
 * 
 * SkyLab 的文档授权到公共领域。SkyLab 的文档为 docs/ 目录下的所有文件。
 * 
 * 意法半导体的库源码使用 MCD-ST Liberty SW License Agreement V2 协议授权。
 * 意法半导体源码库为 driver/ 目录下的所有文件和 lib/ 目录下的所有文件。
 * 
 * SkyLab is not affiliated with STMicroelectronics.
 */

int main() __attribute__((noreturn));

/**
 * C 语言入口函数。
 *
 * 请不要在这里添加任何额外的代码，它可能会产生难以预料的后果。
 *
 * 如果你希望增加新的功能，请参考 `user/` 目录下的用户任务程序。
 *
 * 如果你希望编写新的驱动，请参考 `driver/` 目录下的驱动程序。
 *
 * 如果你希望改动内核设置，请参考 `kernel/config.h`.
 *
 * @return 此函数永不返回
 */
int main() {
	kernel_init();
	kernel_loop();
}
